# tooltip.py
import tkinter as tk


class ToolTip:
    def __init__(self, widget, text):
        """
        初始化 ToolTip。

        :param widget: 需要绑定 ToolTip 的控件
        :param text: 提示文字
        """
        self.widget = widget
        self.text = text
        self.tooltip = None
        self.widget.bind("<Enter>", self.show_tooltip)
        self.widget.bind("<Leave>", self.hide_tooltip)

    def show_tooltip(self, event=None):
        """显示 ToolTip"""
        if self.tooltip or not self.text:
            return

        # 获取鼠标位置
        x = self.widget.winfo_rootx() + 25  # 控件左上角的 x 坐标 + 偏移量
        y = self.widget.winfo_rooty() + 25  # 控件左上角的 y 坐标 + 偏移量

        # 创建 ToolTip 窗口
        self.tooltip = tk.Toplevel(self.widget)
        self.tooltip.wm_overrideredirect(True)  # 去掉窗口边框
        self.tooltip.wm_geometry(f"+{x}+{y}")

        label = tk.Label(
            self.tooltip,
            text=self.text,
            bg="#ffffe0",  # 背景色
            relief="solid",  # 边框样式
            borderwidth=1,  # 边框宽度
            font=("Helvetica", 10)  # 字体
        )
        label.pack()

    def hide_tooltip(self, event=None):
        """隐藏 ToolTip"""
        if self.tooltip:
            self.tooltip.destroy()
            self.tooltip = None